public class TestDemo {


    public static void main(String[] args) {
        String str="1234";
        String str1="3.14";
        int a=Integer.valueOf(str);
        double c=Double.valueOf(str1);

        System.out.println(a);
        System.out.println(c);
    }
    public static void main111(String[] args) {
        String s1 = "hello";
        String s2 = " world";
        System.out.println(s1+s2); // s1+s2表示：将s1和s2进行拼接
    }
    //字符串转换为数值同理：引用类+点+方法
    public static void main16(String[] args) {
        String str="1234";
        String str1="3.14";
        int a=Integer.valueOf(str);
        int aa=Integer.parseInt(str);//二者效果一样

        double c=Double.valueOf(str1);
        System.out.println(a);
        System.out.println(aa);
        System.out.println(c);


    }


    //数值转字符串，使用引用类的方法，引用类+点+方法
    public static void main15(String[] args) {
        int a=10;
        float b=1.1f;
        String str=String.valueOf(b);
        String str1=String.valueOf("----->"+a);
        System.out.println(str1);


        //投机取巧：num+“”
        int c=102;
        String str2=c+"";
        System.out.println(str2);
    }


//--------------------String引用类型
    public static void main14(String[] args) {
        //java中没有地址
        String str="hello";
        //a是局部变量，此时a是存放在栈上的
//        Java中没有明确所谓字符串以\0截止
        System.out.println(str);//Java中sout的特点：不管是什么值都给你打印
        int a=10;
        int b=20;
        //从左向右依次计算
        //字符串+字符串表示字符串的拼接
        //字符串+其他类型=字符串
        System.out.println(str+str);
        System.out.println(str+a+b);
        System.out.println(a+b+str);
    }

    //基本数据类型对应的类类型 ——>包装类
    //----------------------------------------------------

    public static void main13(String[] args) {
        byte a = 10;
        byte b = 20;
        byte c = (byte)(a + b);
        System.out.println(c);
    }

    //透彻理解byte和short的赋值问题
    public static void main0(String[] args) {
        byte a=10;
        byte b=a;
        short d=10;

        //a=b+1;

        //byte和short赋值的特殊检查
        //像byte、short这种小于int的数据类型，由于默认整数值为int类型，如果直接赋值为‘’字面值常量‘’{默认为int}，或字面值常量的运算，编译器会自动进行检查，如果字面值不超过byte或short的范围，就不会报错。

        //整形提升
        //如果byte或short被赋值为相同的类型变量，如果赋值中出现了‘’变量‘’的加减整数，变量加减变量则会发生整形提升，此时将int赋值给byte就会报错。
        //这时如果想要赋值，就必须进行强制类型转换了。
    }


    public static void main12(String[] args) {
        int a=10;
        long b=20L;
        int c=(int)(a+b);//a提升为8个字节 然后和b运算 -》8个字节的结果


//        long d=a+b;
//        System.out.println(c);
//        System.out.println(d);
//
//        a=(int)b;//强制类型转换不一定安全，有风险

        int e=10;
        float f=12.5f;
        e=(int)f;

        System.out.println(e);
        System.out.println(f);
    }
    public static void main11(String[] args) {
        byte a=10;
        byte b=20;
//        byte c=a+b;//如不加任何修饰则报错，因为小于4个字节时会提升为4个字节
        byte c=(byte)(a+b);
        System.out.println(c);
    }

//  布尔型

    public static void main10(String[] args) {
        //在java中，有且仅有一个真：true；只有一个假：flase
        //JVM没有明确他的大小
        byte a=1;
        byte b=2;
        boolean flg=true;
        System.out.println(flg);
    }
    
//  字符型

    public static void main9(String[] args) {
        //2个字节 不能赋负值 Character
        char ch = 'a';
        System.out.println(ch);
        char ch2 = '美';
        System.out.println(ch2);

        char ch3 = 97;
        System.out.println(ch3);


    }
    //单精度浮点型
    //双精度浮点型

    public static void main8(String[] args) {
        //4个字节
        float f=12.5f;
        System.out.println(f);
        double d=11.2;
        //f=d;错误
    }

    public static void main7(String[] args) {
        //8个字节
        double d=5;
        System.out.println(d/2.0);
        double num=1.1;
        System.out.println(num*num);
    }


    //    字节型
    //    短整型
    //    整形
    //    长整型
    public static void main6(String[] args) {
        //1个字节
        byte a=127;
        //byte b=128;//会报错，自动检查
        System.out.println(a);
        System.out.println(Byte.MAX_VALUE);
        System.out.println(Byte.MIN_VALUE);
    }
    public static void main5(String[] args) {
        //2个字节
         short sh=-32760;
        System.out.println(sh);
        System.out.println(Short.MAX_VALUE);
        System.out.println(Short.MIN_VALUE);

    }

    public static void main4(String[] args) {
        //8个字节
        long a=10L;
        System.out.println(a);
        System.out.println(Long.MAX_VALUE);
        System.out.println(Long.MIN_VALUE);
    }
    public static void main3(String[] args) {
        //这里的a是整形变量，始终占4个字节，跟平台是多少位没有关系
        int a=10;
        System.out.println(a);
        //这两行代码表示：使用包装类输出int的最大最小值
        System.out.println(Integer.MAX_VALUE);
        System.out.println(Integer.MIN_VALUE);
    }
    public static void main2(String[] args) {
        //数据类型 变量 =赋值 //变量可以在运行中修改的量
        int a=10;
        a=20;
    }
    public static void main1(String[] args) {
        final int a=10;//不可更改的a变量
        System.out.println();
    }
}
